package com.cyzy.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cyzy.dao.RoleMenu;
import com.cyzy.dao.UserRole;
import com.cyzy.pojo.Role;
import com.cyzy.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.sql.Timestamp;
import java.util.List;

@Mapper
public interface UserMapper extends BaseMapper<User> {

   Page<UserRole> selectAllUser(Page<UserRole> page, @Param("userId") long userId,
                                @Param("userAcc") String userAcc,
                                @Param("userName") String userName,
                                @Param("userSex") String userSex,
                                @Param("userPhone") String userPhone,
                                @Param("userEmail") String userEmail,
                                @Param("userStatus") String userStatus,
                                @Param("lastLoginTime") Timestamp lastLoginTime,
                                @Param("createTime") Timestamp createTime,
                                @Param("roleId") long roleId,
                                @Param("roles") String roles);

    List<Role> selectAllRole();


    int updateUser(@Param("userId") long userId,
                   @Param("userAcc") String userAcc,
                   @Param("userName") String userName,
                   @Param("userSex") String userSex,
                   @Param("userPhone") String userPhone,
                   @Param("userEmail") String userEmail,
                   @Param("roleId") long roleId,
                   @Param("userNote") String userNote);

    int updateUserStatus(@Param("userId") long userId,
                         @Param("userStatus") String userStatus);

    int deleteUser(@Param("userIds") List<Integer> id);

    int updateUserPwd(@Param("userId") long userId,
                         @Param("userPwd") String userPwd);

    int insertUser(UserRole userRole);

    int insertUserRole(@Param("userId") Long userId, @Param("roleId") Long roleId);

    UserRole existUser(UserRole userRole);

 int addUserRole(@Param("userId") long userId,
                 @Param("roleIds") List<Long> roleIds);

    int deleteAllUserRole(@Param("userId") long userId);

    List<UserRole> getUserRole(@Param("userId") long userId,
                            @Param("roleId") long roleId);

   List<UserRole> getUser(UserRole userRole);

}

